using System.Collections;
using System.Xml;
using Bannerlord.ModuleManager;
namespace NexusMods.Games.MountAndBlade2Bannerlord;

/// <summary>
/// Temporary code, to make game 'usable' while we wait for approval to make the game
/// properly usable. Scheduled for DELETION.
/// </summary>
public static class Hack
{
    public static IEnumerable<ModuleInfoExtended> GetDummyBaseGameModules()
    {
        // These are ordered as they are in launcher defaults.
        // Do not reorder, I didn't fully stub the items above
        yield return NativeModuleInfo;
        yield return SandBoxCoreModuleInfo;
        yield return CustomBattleModuleInfo;
        yield return SandboxModuleInfo;
        yield return StoryModeModuleInfo;
        yield return BirthAndDeathModuleInfo;
    }

    private static ModuleInfoExtended FromXml(string xml)
    {
        var xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xml);
        return ModuleInfoExtended.FromXml(xmlDoc);
    }

    private static ModuleInfoExtended NativeModuleInfo = FromXml(
"""
<?xml version='1.0' encoding='utf-8'?>
<Module>
	<Name value="Native" />
	<Id value="Native" />
	<Version value="v1.2.11" />
  <ModuleType value="Official" />
  <DependedModules />
  <!-- ModulesToLoadAfterThis means, modules given in this scope will load after this module-->
  <ModulesToLoadAfterThis>
    <!--<Module Id="FooBarModule"/>-->
  </ModulesToLoadAfterThis>
  <!-- IncompatibleModules means, if any modules given in this scope exists and enabled, this module will be disabled-->
  <IncompatibleModules>
    <!--<Module Id="FooBarModule"/>-->
  </IncompatibleModules>
	<SubModules>
		<SubModule>
			<Name value="ViewSubModule" />
			<DLLName value="TaleWorlds.MountAndBlade.View.dll" />
			<SubModuleClassType value="TaleWorlds.MountAndBlade.View.ViewSubModule" />
			<Tags>
				<Tag key="DedicatedServerType" value="none" />
				<Tag key="IsNoRenderModeElement" value="false" />
			</Tags>
		</SubModule>
		<SubModule>
			<Name value="GauntletUISubModule" />
			<DLLName value="TaleWorlds.MountAndBlade.GauntletUI.dll" />
			<SubModuleClassType value="TaleWorlds.MountAndBlade.GauntletUI.GauntletUISubModule" />
			<Assemblies>
				<Assembly value="TaleWorlds.MountAndBlade.GauntletUI.AutoGenerated.0.dll" />
				<Assembly value="TaleWorlds.MountAndBlade.GauntletUI.AutoGenerated.1.dll" />
			</Assemblies>
			<Tags>
				<Tag key="DedicatedServerType" value="none" />
				<Tag key="IsNoRenderModeElement" value="false" />
			</Tags>
		</SubModule>
		<SubModule>
			<Name value="PlatformPCSubModule" />
			<DLLName value="TaleWorlds.MountAndBlade.Platform.PC.dll" />
			<SubModuleClassType value="TaleWorlds.MountAndBlade.Platform.PC.PlatformPCSubModule" />
			<Tags>
				<Tag key="DedicatedServerType" value="none" />
				<Tag key="RejectedPlatform" value="Orbis" />
				<Tag key="RejectedPlatform" value="Durango" />
				<Tag key="RejectedPlatform" value="GDKDesktop" />
			</Tags>
		</SubModule>
		<SubModule>
			<Name value="PlatformPSSubModule" />
			<DLLName value="TaleWorlds.MountAndBlade.Platform.PS.dll" />
			<SubModuleClassType value="TaleWorlds.MountAndBlade.Platform.PS.PlatformPSSubModule" />
			<Tags>
				<Tag key="ExclusivePlatform" value="Orbis" />
			</Tags>
		</SubModule>
		<SubModule>
			<Name value="PlatformGDKSubModule" />
			<DLLName value="TaleWorlds.MountAndBlade.Platform.GDK.dll" />
			<SubModuleClassType value="TaleWorlds.MountAndBlade.Platform.GDK.PlatformGDKSubModule" />
			<Tags>
				<Tag key="RejectedPlatform" value="Undefined" />
				<Tag key="RejectedPlatform" value="WindowsSteam" />
				<Tag key="RejectedPlatform" value="WindowsEpic" />
				<Tag key="RejectedPlatform" value="Orbis" />
				<Tag key="RejectedPlatform" value="Web" />
				<Tag key="RejectedPlatform" value="WindowsNoPlatform" />
				<Tag key="RejectedPlatform" value="LinuxNoPlatform" />
				<Tag key="RejectedPlatform" value="WindowsGOG" />
			</Tags>
		</SubModule>
	</SubModules>
	
	<Xmls>
		<XmlNode>                
			<XmlName id="Items" path="mpitems" />
			<IncludedGameTypes>
				<GameType value="MultiplayerGame" />
			</IncludedGameTypes>
		</XmlNode>    
		<XmlNode>                
			<XmlName id="EquipmentRosters" path="native_equipment_sets" />
			<IncludedGameTypes>
				<GameType value="MultiplayerGame" />
			</IncludedGameTypes>
		</XmlNode>  
		<XmlNode>                
			<XmlName id="SkillSets" path="native_skill_sets" />
			<IncludedGameTypes>
				<GameType value="MultiplayerGame" />
			</IncludedGameTypes>
		</XmlNode> 
		<XmlNode>                
			<XmlName id="BodyProperties" path="mpbodypropertytemplates" />
			<IncludedGameTypes>
				<GameType value="MultiplayerGame" />
			</IncludedGameTypes>
		</XmlNode> 
		<XmlNode>                
			<XmlName id="MPCharacters" path="mpcharacters" />
			<IncludedGameTypes>
				<GameType value="MultiplayerGame" />
			</IncludedGameTypes>
		</XmlNode>               
		<XmlNode>                
			<XmlName id="BasicCultures" path="mpcultures" />
			<IncludedGameTypes>
				<GameType value="MultiplayerGame" />
			</IncludedGameTypes>
		</XmlNode>               
		<XmlNode>                
			<XmlName id="MPClassDivisions" path="mpclassdivisions" />
			<IncludedGameTypes>
				<GameType value="MultiplayerGame" />
			</IncludedGameTypes>
		</XmlNode>               
		<XmlNode>                
			<XmlName id="Monsters" path="monsters" />
		</XmlNode>               
		<XmlNode>                
			<XmlName id="ItemModifiers" path="item_modifiers" />
		</XmlNode>               
		<XmlNode>                
			<XmlName id="ItemModifierGroups" path="item_modifiers_groups" />
		</XmlNode>               
		<XmlNode>                
			<XmlName id="CraftingPieces" path="mp_crafting_pieces" />
			<IncludedGameTypes>
				<GameType value="MultiplayerGame" />
			</IncludedGameTypes>
		</XmlNode>               
		<XmlNode>                
			<XmlName id="CraftingPieces" path="crafting_pieces" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
				<GameType value="CustomGame" />
				<GameType value="EditorGame" />
			</IncludedGameTypes>
		</XmlNode>               
		<XmlNode>                
			<XmlName id="WeaponDescriptions" path="weapon_descriptions" />
		</XmlNode>               
		<XmlNode>                
			<XmlName id="CraftingTemplates" path="crafting_templates" />
		</XmlNode>          
		<XmlNode>                
			<XmlName id="SkeletonScales" path="skeleton_scales" />
		</XmlNode>   
		<XmlNode>                
			<XmlName id="SiegeEngines" path="siegeengines" />
		</XmlNode>  
		<XmlNode>                
			<XmlName id="GameText" path="global_strings" />
		</XmlNode>  
		<XmlNode>                
			<XmlName id="GameText" path="native_strings" />
		</XmlNode>  
		<XmlNode>                
			<XmlName id="GameText" path="module_strings" />
		</XmlNode>  
		<XmlNode>                
			<XmlName id="GameText" path="photo_mode_strings" />
		</XmlNode>  
		<XmlNode>                
			<XmlName id="GameText" path="multiplayer_strings" />
			<IncludedGameTypes>
				<GameType value="MultiplayerGame" />
				<GameType value="CustomGame" />
				<GameType value="EditorGame" />
			</IncludedGameTypes>
		</XmlNode>  
	</Xmls>
</Module>
"""
    );
    
    private static ModuleInfoExtended SandBoxCoreModuleInfo = FromXml(
"""
<?xml version='1.0' encoding='utf-8'?>
<Module>
	<Name value="SandBox Core" />
	<Id value="SandBoxCore" />
	<Version value="v1.2.11" />
	<DefaultModule value="true" />
	<ModuleCategory value="Singleplayer" />
  <ModuleType value="Official" />
  <DependedModules>
		<DependedModule Id="Native" DependentVersion="v1.2.11" Optional="false" />
	</DependedModules>
	<SubModules />
	<Xmls>
		<XmlNode>                
			<XmlName id="Items" path="items" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
				<GameType value="CustomGame" />
				<GameType value="EditorGame" />
			</IncludedGameTypes>
		</XmlNode>  
		<XmlNode>                
			<XmlName id="SPCultures" path="spcultures" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
				<GameType value="CustomGame" />
				<GameType value="EditorGame" />
			</IncludedGameTypes>
		</XmlNode>             
		<XmlNode>                
			<XmlName id="BodyProperties" path="sandboxcore_bodyproperties" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
				<GameType value="CustomGame" />
				<GameType value="EditorGame" />
			</IncludedGameTypes>
		</XmlNode>    
		<XmlNode>                
			<XmlName id="EquipmentRosters" path="sandboxcore_equipment_sets" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
				<GameType value="CustomGame" />
				<GameType value="EditorGame" />
			</IncludedGameTypes>
		</XmlNode>  
		<XmlNode>                
			<XmlName id="SkillSets" path="sandboxcore_skill_sets" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
				<GameType value="CustomGame" />
				<GameType value="EditorGame" />
			</IncludedGameTypes>
		</XmlNode>   
		<XmlNode>                
			<XmlName id="NPCCharacters" path="spnpccharactertemplates" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
				<GameType value="CustomGame" />
				<GameType value="EditorGame" />
			</IncludedGameTypes>
		</XmlNode>      
		<XmlNode>                
			<XmlName id="NPCCharacters" path="spnpccharacters" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
				<GameType value="CustomGame" />
				<GameType value="EditorGame" />
			</IncludedGameTypes>
		</XmlNode>  
		<XmlNode>                
			<XmlName id="NPCCharacters" path="obsolete_characters" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
				<GameType value="CustomGame" />
				<GameType value="EditorGame" />
			</IncludedGameTypes>
		</XmlNode>
	</Xmls>
</Module>
"""
    );
    
    private static ModuleInfoExtended CustomBattleModuleInfo = FromXml(
"""
<?xml version='1.0' encoding='utf-8'?>
<Module>
	<Name value="CustomBattle" />
	<Id value="CustomBattle" />
	<Version value="v1.2.11" />
	<DefaultModule value="true" />
	<ModuleCategory value="Singleplayer" />
  <ModuleType value="Official" />
  <DependedModules>
		<DependedModule Id="Native" DependentVersion="v1.2.11" Optional="false" />
		<DependedModule Id="SandBoxCore" DependentVersion="v1.2.11" Optional="false" />
	</DependedModules>
	<SubModules>
		<SubModule>
			<Name value="CustomBattleSubModule" />
			<DLLName value="TaleWorlds.MountAndBlade.CustomBattle.dll" />
			<SubModuleClassType value="TaleWorlds.MountAndBlade.CustomBattle.CustomBattleSubModule" />			
			<Tags>
				<Tag key="DedicatedServerType" value="none" />
			</Tags>
		</SubModule>
	</SubModules>
	<DependentExternalModuleDLLS>
		<DependentDLL Module="Multiplayer" DLL="TaleWorlds.MountAndBlade.Multiplayer.dll" />
	</DependentExternalModuleDLLS>
	<Xmls>
		<XmlNode>                
			<XmlName id="NPCCharacters" path="custombattlecharacters" />
			<IncludedGameTypes>
				<GameType value="CustomGame" />
				<GameType value="EditorGame" />
			</IncludedGameTypes>
		</XmlNode>  
		<XmlNode>                
			<XmlName id="Scene" path="custom_battle_scenes" />
		</XmlNode> 
	</Xmls>
</Module>
"""
    );
    
    private static ModuleInfoExtended SandboxModuleInfo = FromXml(
"""
<?xml version='1.0' encoding='utf-8'?>
<Module>
	<Name value="Sandbox" />
	<Id value="Sandbox" />
	<Version value="v1.2.11" />
	<DefaultModule value="true" />
	<ModuleCategory value="Singleplayer" />
  <ModuleType value="Official" />
  <DependedModules>
		<DependedModule Id="Native" DependentVersion="v1.2.11" Optional="false" />
		<DependedModule Id="SandBoxCore" DependentVersion="v1.2.11" Optional="false" />
	</DependedModules>
	<SubModules>
		<SubModule>
			<Name value="SandBox" />
			<DLLName value="SandBox.dll" />
			<SubModuleClassType value="SandBox.SandBoxSubModule" />			
			<Tags>
				<Tag key="DedicatedServerType" value="none" />
				<Tag key="IsNoRenderModeElement" value="false" />
			</Tags>
		</SubModule>
		<SubModule>
			<Name value="SandBox.View" />
			<DLLName value="SandBox.View.dll" />
			<Assemblies>
				<Assembly value="SandBox.ViewModelCollection.dll" />
			</Assemblies>
			<SubModuleClassType value="SandBox.View.SandBoxViewSubModule" />
			<Tags>
				<Tag key="DedicatedServerType" value="none" />
				<Tag key="IsNoRenderModeElement" value="false" />
			</Tags>
		</SubModule>		
		<SubModule>
			<Name value="SandBox.GauntletUI" />
			<DLLName value="SandBox.GauntletUI.dll" />
			<SubModuleClassType value="SandBox.GauntletUI.SandBoxGauntletUISubModule" />
			<Assemblies>
				<Assembly value="SandBox.GauntletUI.AutoGenerated.0.dll" />
				<Assembly value="SandBox.GauntletUI.AutoGenerated.1.dll" />
			</Assemblies>
			<Tags>
				<Tag key="DedicatedServerType" value="none" />
				<Tag key="IsNoRenderModeElement" value="false" />
			</Tags>
		</SubModule>
	</SubModules>
	
	<Xmls>
		<XmlNode>                
			<XmlName id="NPCCharacters" path="obsolete_characters" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>           
		<XmlNode>
			<XmlName id="partyTemplates" path="partyTemplates" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>	
		<XmlNode>               
			<XmlName id="NPCCharacters" path="lords" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>               
		<XmlNode>                
			<XmlName id="NPCCharacters" path="bandits" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode> 
		<XmlNode>                
			<XmlName id="Heroes" path="heroes" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="EquipmentRosters" path="education_equipment_templates" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>      
		<XmlNode>                
			<XmlName id="EquipmentRosters" path="sandbox_equipment_sets" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>      
		<XmlNode>                
			<XmlName id="NPCCharacters" path="education_character_templates" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>    		            
		<XmlNode>                
			<XmlName id="NPCCharacters" path="caravans" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>                       
		<XmlNode>                
			<XmlName id="NPCCharacters" path="spspecialcharacters" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>               
		<XmlNode>                
			<XmlName id="NPCCharacters" path="spgenericcharacters" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>               
		<XmlNode>                
			<XmlName id="Kingdoms" path="spkingdoms" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>               
		<XmlNode>                
			<XmlName id="Factions" path="spclans" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>               
		<XmlNode>                
			<XmlName id="WorkshopTypes" path="spworkshops" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>               
		<XmlNode>                
			<XmlName id="LocationComplexTemplates" path="location_complex_templates" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>               
		<XmlNode>                
			<XmlName id="Concepts" path="concept_strings" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>               
		<XmlNode>                
			<XmlName id="Settlements" path="settlements" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="BodyProperties" path="sandbox_bodyproperties" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="SkillSets" path="sandbox_skill_sets" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="MusicInstruments" path="settlement_track_instruments" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="MusicTracks" path="settlement_tracks" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="GameText" path="module_strings" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="GameText" path="world_lore_strings" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="GameText" path="companion_strings" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="GameText" path="wanderer_strings" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="GameText" path="comment_strings" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="GameText" path="comment_on_action_strings" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="GameText" path="trait_strings" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="GameText" path="voice_strings" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="GameText" path="action_strings" />
			<IncludedGameTypes>
				<GameType value="Campaign" />
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
	</Xmls>
</Module>
"""
    );
    
    private static ModuleInfoExtended StoryModeModuleInfo = FromXml(
"""
<?xml version='1.0' encoding='utf-8'?>
<Module>
	<Name value="StoryMode" />
	<Id value="StoryMode" />
	<Version value="v1.2.11" />
	<DefaultModule value="true" />
	<ModuleCategory value="Singleplayer" />
  <ModuleType value="Official" />
  <DependedModules>
		<DependedModule Id="Native" DependentVersion="v1.2.11" Optional="false" />
		<DependedModule Id="SandBoxCore" DependentVersion="v1.2.11" Optional="false" />
		<DependedModule Id="Sandbox" DependentVersion="v1.2.11" Optional="false" />
	</DependedModules>
	<SubModules>
		<SubModule>
			<Name value="StoryMode" />
			<DLLName value="StoryMode.dll" />
			<SubModuleClassType value="StoryMode.StoryModeSubModule" />			
			<Tags>
				<Tag key="DedicatedServerType" value="none" />
				<Tag key="IsNoRenderModeElement" value="false" />
			</Tags>
		</SubModule>
		<SubModule>
			<Name value="StoryMode.View" />
			<DLLName value="StoryMode.View.dll" />
			<Assemblies>
				<Assembly value="StoryMode.ViewModelCollection.dll" />
			</Assemblies>
			<SubModuleClassType value="StoryMode.View.StoryModeViewSubModule" />
			<Tags>
				<Tag key="DedicatedServerType" value="none" />
				<Tag key="IsNoRenderModeElement" value="false" />
			</Tags>
		</SubModule>		
		<SubModule>
			<Name value="StoryMode.GauntletUI" />
			<DLLName value="StoryMode.GauntletUI.dll" />
      		<Assemblies>
      		  <Assembly value="StoryMode.GauntletUI.AutoGenerated.dll" />
      		</Assemblies>
			<SubModuleClassType value="StoryMode.GauntletUI.StoryModeGauntletUISubModule" />
			<Tags>
				<Tag key="DedicatedServerType" value="none" />
				<Tag key="IsNoRenderModeElement" value="false" />
			</Tags>
		</SubModule>
	</SubModules>
	
	<Xmls>
		<XmlNode>                
			<XmlName id="LocationComplexTemplates" path="story_mode_location_complex_templates" />
			<IncludedGameTypes>
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="EquipmentRosters" path="story_mode_equipments" />
			<IncludedGameTypes>
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="NPCCharacters" path="story_mode_characters" />
			<IncludedGameTypes>
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
		<XmlNode>                
			<XmlName id="partyTemplates" path="story_mode_party_templates" />
			<IncludedGameTypes>
				<GameType value="CampaignStoryMode" />
			</IncludedGameTypes>
		</XmlNode>
    <XmlNode>                
      <XmlName id="Items" path="story_mode_items" />
      <IncludedGameTypes>
        <GameType value="CampaignStoryMode" />
      </IncludedGameTypes>
    </XmlNode>  
	<XmlNode>                
		<XmlName id="GameText" path="module_strings" />
		<IncludedGameTypes>
			<GameType value="CampaignStoryMode" />
		</IncludedGameTypes>
	</XmlNode>
  </Xmls>
	
</Module>
"""
    );
    
     private static ModuleInfoExtended BirthAndDeathModuleInfo = FromXml(
"""
<?xml version='1.0' encoding='utf-8'?>
<Module>
	<Name value="Birth and Aging Options" />
	<Id value="BirthAndDeath" />
	<Version value="v1.2.11" />
	<SingleplayerModule value="true" />
  <ModuleType value="OfficialOptional" />
  <DependedModules>
		<DependedModule Id="Native" DependentVersion="v1.2.11" Optional="false" />
		<DependedModule Id="SandBoxCore" DependentVersion="v1.2.11" Optional="false" />
	</DependedModules>
	
	<!-- ModulesToLoadAfterThis means, modules given in this scope will load after this module-->
	<ModulesToLoadAfterThis>
		<!--<Module Id="FooBarModule"/>-->
	</ModulesToLoadAfterThis>
	
	<!-- IncompatibleModules means, if any modules given in this scope exists and enabled, this module will be disabled-->
	<IncompatibleModules>
		<!--<Module Id="FooBarModule"/>-->
	</IncompatibleModules>
	
	<Xmls>
	</Xmls>
	
	<SubModules>
		<SubModule>
			<Name value="BirthAndDeathSubModule" />
			<DLLName value="TaleWorlds.CampaignSystem.ViewModelCollection.BirthAndDeath.dll" />
			<SubModuleClassType value="TaleWorlds.CampaignSystem.ViewModelCollection.BirthAndDeath.BirthAndDeathSubModule" />			
			<Tags>
				<Tag key="DedicatedServerType" value="none" />
			</Tags>
		</SubModule>
	</SubModules>
</Module>
"""
    );
}
